Research
Security News
Threat Actor Exposes Playbook for Exploiting npm to Build Blockchain-Powered Botnets
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Youch is a package for pretty-printing error objects in Node.js. It provides a user-friendly way to display error stack traces, making it easier to debug issues in your application.
Pretty-Print Error Stack Traces
This feature allows you to catch errors in your Node.js application and render a pretty HTML page with the error stack trace. This makes it easier to identify and fix issues.
const Youch = require('youch');
const http = require('http');
http.createServer((req, res) => {
try {
throw new Error('Something went wrong!');
} catch (error) {
new Youch(error, req).toHTML().then(html => {
res.writeHead(200, { 'content-type': 'text/html' });
res.end(html);
});
}
}).listen(3000);
JSON Output
This feature allows you to catch errors and output the error stack trace as a JSON object. This can be useful for logging or for APIs that need to return error details in JSON format.
const Youch = require('youch');
const http = require('http');
http.createServer((req, res) => {
try {
throw new Error('Something went wrong!');
} catch (error) {
new Youch(error, req).toJSON().then(json => {
res.writeHead(200, { 'content-type': 'application/json' });
res.end(JSON.stringify(json));
});
}
}).listen(3000);
Express Error Handler is a middleware for handling errors in Express applications. It provides a way to catch and handle errors, and can be configured to display error details in development mode. Unlike Youch, it is specifically designed for use with Express.
Errorhandler is a middleware for handling errors in Connect and Express applications. It provides a simple way to catch and display error stack traces. It is similar to Youch in that it provides a user-friendly way to display errors, but it is more lightweight and less feature-rich.
Pretty-Error is a package for rendering error stack traces in a more readable format. It can be used with any Node.js application and provides a way to customize the appearance of error stack traces. It is similar to Youch in that it focuses on making error stack traces more readable, but it does not provide HTML or JSON output.
Pretty error reporting for Node.js :rocket:
Youch is inspired by Whoops but with a modern design. Reading stack trace of the console slows you down from active development. Instead Youch print those errors in structured HTML to the browser.
Checkout youch terminal to beautify errors on terminal.
npm i --save youch
Youch is used by AdonisJs, but it can be used by express or raw HTTP server as well.
const Youch = require('youch')
const http = require('http')
http.createServer(async function (req, res) {
// PERFORM SOME ACTION
if (error) {
const youch = new Youch(error, req)
const html = await youch.toHTML()
res.writeHead(200, {'content-type': 'text/html'})
res.write(html)
res.end()
}
}).listen(8000)
Everytime an error occurs, we can help users we letting search for the error on Google, over even on the Github repo of our project.
Youch let you define clickable links to redirect the user to a website with the error message.
const youch = new Youch(error)
await youch
.addLink(({ message }) => {
const url = `https://stackoverflow.com/search?q=${encodeURIComponent(`[adonis.js] ${message}`)}`
return `<a href="${url}" target="_blank" title="Search on stackoverflow">Search stackoverflow</a>`
})
.toHTML()
Also you can make use of Font awesome brands icons to display icons.
If you will use fontawesome icons, then Youch will automatically load the CSS files from the font awesome CDN for you.
const youch = new Youch(error)
await youch
.addLink(({ message }) => {
const url = `https://stackoverflow.com/search?q=${encodeURIComponent(`[adonis.js] ${message}`)}`
return `<a href="${url}" target="_blank" title="Search on stackoverflow"><i class="fab fa-stack-overflow"></i></a>`
})
.toHTML()
When rendering HTML you can call the toggleShowAllFrames
method to check/uncheck the show all frames checkbox.
By default, the checkbox is not checked and calling this method once will toggle the state.
const youch = new Youch(error)
await youch
.toggleShowAllFrames()
.toHTML()
Youch HTML output outputs inline style
and script
tags and therefore you will have add nonce
attribute to them when you have enabled CSP on your website.
You can pass the cspNonce
property to the toHTML
method at the time of rendering the error to an HTML output.
const youch = new Youch(error, req)
const html = await youch.toHTML({
cspNonce: 'nonce-value'
})
You can also the error stack frames as JSON by calling the .toJSON
method.
const youch = new Youch(error, {})
const jsonResponse = await youch.toJSON()
Following is the shape of the toJSON
return data type.
type JsonResponse = {
error: {
message: string;
name: string;
status: number;
frames: {
file: string,
filePath: string,
line: number,
column: number,
callee: string,
calleeShort: string,
context: {
start: number,
pre: string,
line: string,
post: string,
},
isModule: boolean,
isNative: boolean,
isApp: boolean
}[];
};
}
Checkout CHANGELOG.md file for release history.
Checkout LICENSE.md for license information Harminder Virk (Aman) - https://github.com/thetutlage
FAQs
HTML Pretty error stack viewer
We found that youch demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.